package com.yuw.action;


import com.yuw.bean.UserInfoBean;
import com.yuw.service.IUserInfoService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Controller
public class UserInfoAction {

    // 进行依赖注入
    //@Autowired
    @Resource
    private IUserInfoService userInfoService;

    /**
     * 要求form表单的表单控件的name属性值和action中的handler方法中的java实体类类型的形参参数的属性名保持一致；
     * 则可以直接将表单数据传递给action方法的形参参数
     * 推荐使用的常用方式
     *
     * @param userInfoBean
     * @return
     */
    @RequestMapping("/doLogin")
    public ModelAndView doLogin(UserInfoBean userInfoBean) {
        System.out.println("登录用户名：" + userInfoBean.getUsername() + ";密码：" + userInfoBean.getUserpsw());
        ModelAndView mav = new ModelAndView();
        // 调用service层进行用户登录信息的合法性验证
        boolean isOK = userInfoService.isLogined(userInfoBean);
        // 根据业务逻辑处理结果，跳转不同的view
        if (isOK) {
            // 登录成功，进入主页面,并缓存登录成功的用户信息
            mav.setViewName("logined");
            mav.addObject("loginedUserName", userInfoBean.getUsername());
        } else {
            // 登录失败，继续回到登录页面
            mav.setViewName("../../index");
        }
        return mav;
    }

    @RequestMapping("/UserInfoAjaxQueryServlet")
    @ResponseBody
    public List<UserInfoBean> queryUserInfoByParams(UserInfoBean userInfoBean) {
        // 调用service层进行查询业务逻辑处理
        List<UserInfoBean> lst = userInfoService.getUserInfoByParams(userInfoBean);
        return lst;
    }

    @RequestMapping("/saveUserInfo")
    @ResponseBody
    public String saveOrUpdateUserInfo(UserInfoBean userInfoBean) {
        // 默认返回值
        String strResult = "ng";
        // 调用service层进行用户信息新增的业务逻辑处理
        int i = userInfoService.saveOrUpdateUserInfo(userInfoBean);
        // 新增成功
        if (i > 0) {
            // 新增成功
            strResult = "ok";
        }
        return strResult;
    }
}